package persistores.persistoresDeVehiculo;

import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import vehiculos.Estado;
import vehiculos.Vehiculo;
import ciudad.Ciudad;

@XmlRootElement
public class VehiculoAdaptador {
	Estado tipoDeVehiculo;
	private int cantidadDeMovimientos;
	private int posicionFila;
	private int posicionColumna;
	
	public VehiculoAdaptador() {}
	
	/* Setea el tipo de vehiculo. */
	@XmlElement
	public void setTipoDeVehiculo(Estado tipoDeVehiculo) {
		this.tipoDeVehiculo = tipoDeVehiculo;
	}
	
	/* Devuelve el tipo del vehiculo. */
	public Estado getTipoDeVehiculo() {
		return this.tipoDeVehiculo;
	}

	/* Setea la cantidad de movimientos del vehiculo. */
	@XmlElement
	public void setCantidadDeMovimientos(int cantidadDeMovimientos) {
		this.cantidadDeMovimientos = cantidadDeMovimientos;
	}
	
	/* Devuelve la cantidad de movimientos*/
	public int getCantidadDeMovimientos() {
		return cantidadDeMovimientos;
	}

	/* Setea la posicion en fila del vehiculo. */
	@XmlElement
	public void setPosicionFila(int posicionFila) {
		this.posicionFila = posicionFila;
	}
	
	/* Devuelve la posicion en fila del vehiculo. */
	public int getPosicionFila() {
		return posicionFila;
	}

	/*Setea la posicion en columna del vehiculo. */
	@XmlElement
	public void setPosicionColumna(int posicionColumna) {
		this.posicionColumna = posicionColumna;
	}

	/* Devuelve la posicion en columna del vehiculo. */
	public int getPosicionColumna() {
		return posicionColumna;
	}

	/* Pre: Recibe un vehiculo y una ciudad.
	 * Asigna al tipo de vehiculo, cantidad de movimientos coordenadas, posicion en fila y posicion en columna
	 * los mismos atributos del vehiculo pasado por parametro. */
	public void adaptar(Vehiculo vehiculo, Ciudad ciudad) {
		this.tipoDeVehiculo = vehiculo.getTipoDeVehiculo();
		this.cantidadDeMovimientos = vehiculo.getCantidadDeMovimientos();
		List<Integer> coordenadas = ciudad.getPosicionDeEsquina(vehiculo.getEsquinaActual());
		this.posicionFila = coordenadas.get(0);
		this.posicionColumna = coordenadas.get(1);
	}
	
}
